home *** CD-ROM | disk | FTP | other *** search
- program Test;
-
- uses Classes, SysUtils, ZLib;
-
- const
- BufferSize = 4096;
-
- type
- TTest = class
- InFile: TStream;
- OutFile: TStream;
- ZStream: TCustomZLibStream;
- Buffer: array[0..BufferSize-1] of Byte;
- procedure Expand;
- procedure Shrink;
- procedure Status(Sender: TObject);
- end;
-
- procedure TTest.Shrink;
- begin
- InFile := TFileStream.Create('c:\work\temp\test.pas', fmOpenRead);
- try
-
- OutFile := TFileStream.Create('c:\work\temp\test.dat', fmCreate);
- try
-
- ZStream := TCompressionStream.Create(clFastest, OutFile);
- try
- TCompressionStream(ZStream).OnProgress := Status;
- ZStream.CopyFrom(InFile, 0);
- finally
- ZStream.Free;
- end;
-
- finally
- OutFile.Free;
- end;
- finally
- InFile.Free;
- end;
- end;
-
-
- procedure TTest.Expand;
- var
- Count: Integer;
- begin
- InFile := TFileStream.Create('c:\work\temp\test.dat', fmOpenRead);
- try
-
- OutFile := TFileStream.Create('c:\work\temp\test.new', fmCreate);
- try
-
- ZStream := TDecompressionStream.Create(InFile);
- try
- TDecompressionStream(ZStream).OnProgress := Status;
- while True do
- begin
- Count := ZStream.Read(Buffer, BufferSize);
- if Count <> 0 then OutFile.WriteBuffer(Buffer, Count) else Break;
- end;
- finally
- ZStream.Free;
- end;
-
- finally
- OutFile.Free;
- end;
- finally
- InFile.Free;
- end;
- end;
-
- procedure TTest.Status(Sender: TObject);
- begin
- Writeln(TCustomZLibStream(Sender).Position);
- end;
-
- var
- T: TTest;
- begin
- T := TTest.Create;
- try
- T.Shrink;
- T.Expand;
- finally
- T.Free;
- end;
- Readln;
- end.
-
-
-